package com.unju.ventanas.perfil;

import java.awt.Dimension;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import com.unju.hibernate.entidades.Perfil;
import com.unju.utils.ConstantesGlobales;
import com.unju.ventanas.principal.JFrmPrincipal;

import javax.swing.JTextPane;
import java.awt.Toolkit;

public class JDialogDetallePermiso extends JDialog {
	
	private static final long serialVersionUID = 1L;
	private JLabel txtNombrePer;
	private JTextPane txtArea;
	//Modulo Gestion de Usuario
	private JRadioButton rbtnActMdUsu;
	private JRadioButton rbtnDesacMdUsu;
	private JCheckBox chkMdUsuarioGuar;
	private JCheckBox chkMdUsuarioModi;
	private JCheckBox chkMdUsuarioEliminar;
	private JCheckBox chkMdUsuarioConsultar;
	//Modulo de Permiso
	private JRadioButton rbtnActMdPer;
	private JRadioButton rbtnDesacMdPer;
	private JCheckBox chkMdPermisoGuar;
	private JCheckBox chkMdPermisoModi;
	private JCheckBox chkMdPermisoEliminar;
	private JCheckBox chkMdPermisoConsultar;
	//Modulo Proyecto	
	private JRadioButton rbtnActMdProy;
	private JRadioButton rbtnDesacMdProy;
	private JCheckBox chkMdProyGuar;
	private JCheckBox chkMdProyModi;
	private JCheckBox chkMdProyEliminar;
	private JCheckBox chkMdProyConsultar;
	//Modulo Auditoria
	private JRadioButton rbtnDesacMdAudi;
	private JRadioButton rbtnActMdAudi;
	private JCheckBox chkMdAudiGuar;
	private JCheckBox chkMdAudiModi;
	private JCheckBox chkMdAudiEliminar;
	private JCheckBox chkMdAudiConsultar;
	
	Perfil perfil;

	/**
	 * Create the frame.
	 */
	public JDialogDetallePermiso(JFrmPrincipal pPrincipal,Perfil p) {		
		crearVentana();		
		initButton();
		panelDatoPer();
		panelModProy();
		panelModAudi();
		panelModUsuario();
		panelModPermiso();				
		LimpiarCheckBox();		
		cargarDatos(p);
		DisableCheckBox();		
		setVisible(true);
	}
	
	public void cargarDatos(Perfil p){
		this.txtNombrePer.setText(p.getNombre());
		this.txtArea.setText(p.getDescripcion());
		String cc=p.getPermiso();
		System.out.println(cc.charAt(0));
		System.out.println(cc);		
		// Permiso
		if(cc.charAt(0)=='1')		
			this.rbtnActMdPer.setSelected(true);
		else
			this.rbtnDesacMdPer.setSelected(true);
		if(cc.charAt(1)=='1')
			this.chkMdPermisoGuar.setSelected(true);
		if(cc.charAt(2)=='1')
			this.chkMdPermisoModi.setSelected(true);
		if(cc.charAt(3)=='1')
			this.chkMdPermisoEliminar.setSelected(true);
		if(cc.charAt(4)=='1')
			this.chkMdPermisoConsultar.setSelected(true);		
		// Usuario
		if(cc.charAt(5)=='1')			
			this.rbtnActMdUsu.setSelected(true);
		else
			this.rbtnDesacMdUsu.setSelected(true);
		if(cc.charAt(6)=='1')
			this.chkMdUsuarioGuar.setSelected(true);
		if(cc.charAt(7)=='1')
			this.chkMdUsuarioModi.setSelected(true);
		if(cc.charAt(8)=='1')
			this.chkMdUsuarioEliminar.setSelected(true);
		if(cc.charAt(9)=='1')
			this.chkMdUsuarioConsultar.setSelected(true);										
		// Auditoria
		if(cc.charAt(10)=='1')
			this.rbtnActMdAudi.setSelected(true);
		else
			this.rbtnDesacMdAudi.setSelected(true);
		if(cc.charAt(11)=='1')
			this.chkMdAudiGuar.setSelected(true);
		if(cc.charAt(12)=='1')
			this.chkMdAudiModi.setSelected(true);
		if(cc.charAt(13)=='1')	
			this.chkMdAudiEliminar.setSelected(true);
		if(cc.charAt(14)=='1')	
			this.chkMdAudiConsultar.setSelected(true);				
		// Proyecto
		if(cc.charAt(15)=='1')
			this.rbtnActMdProy.setSelected(true);
		else
			this.rbtnDesacMdProy.setSelected(true);
		if(cc.charAt(16)=='1')
			this.chkMdProyGuar.setSelected(true);
		if(cc.charAt(17)=='1')
			this.chkMdProyModi.setSelected(true);
		if(cc.charAt(18)=='1')
			this.chkMdProyEliminar.setSelected(true);
		if(cc.charAt(19)=='1')
			this.chkMdProyConsultar.setSelected(true);			
	}
	
	public void crearVentana(){	
		setIconImage(Toolkit.getDefaultToolkit().getImage(JDialogDetallePermiso.class.getResource("/com/unju/img/Key.png")));
		setPreferredSize(new Dimension(550,540)); 		
		setMinimumSize(new Dimension(550, 540));
		setMaximumSize(new Dimension(550, 540));
		setSize(550, 540);		
		setBounds(0, 0, 550, 540);
		getContentPane().setLayout(null);
		setLocationRelativeTo(JFrmPrincipal.getInstance());	
		setTitle(ConstantesGlobales.DETALLE_PERMISO);
		setModal(true);
	}	
	public void panelDatoPer(){
		JPanel pDatosPersonales = new JPanel();
		pDatosPersonales.setBorder(new TitledBorder(null, "Datos De Permiso", TitledBorder.LEFT, TitledBorder.TOP, null, null));
		pDatosPersonales.setBounds(10, 10, 510, 135);		
		pDatosPersonales.setLayout(null);
		getContentPane().add(pDatosPersonales);
		
		JLabel lblNomPer = new JLabel("Nombre de Permiso:");
		lblNomPer.setBounds(50, 27, 150, 14);
		pDatosPersonales.add(lblNomPer);
		
		JLabel lblDescripcion = new JLabel("Descripcion:");
		lblDescripcion.setBounds(50, 50, 100, 14);
		pDatosPersonales.add(lblDescripcion);
		
		txtNombrePer = new JLabel("");
		txtNombrePer.setBounds(175, 24, 150, 20);
		pDatosPersonales.add(txtNombrePer);
		
		txtArea = new JTextPane();
		txtArea.setEditable(false);
		txtArea.setBounds(175, 50, 150, 70);
		pDatosPersonales.add(txtArea);
	}
	
	public void panelModUsuario(){
		JPanel pModGestUsuario = new JPanel();
		pModGestUsuario.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Modulo Gestion de Usuario", TitledBorder.LEFT, TitledBorder.TOP, null, null));
		pModGestUsuario.setBounds(10, 300, 250, 150);		
		pModGestUsuario.setLayout(null);
		getContentPane().add(pModGestUsuario);		
		
		rbtnActMdUsu = new JRadioButton("Activar");
		rbtnActMdUsu.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				chkMdUsuarioGuar.setEnabled(true);
				chkMdUsuarioModi.setEnabled(true);
				chkMdUsuarioEliminar.setEnabled(true);
				chkMdUsuarioConsultar.setEnabled(true);	
			}
		});
		rbtnActMdUsu.setBounds(30, 20, 80, 20);
		pModGestUsuario.add(rbtnActMdUsu);
		
		rbtnDesacMdUsu = new JRadioButton("Desactivar");
		rbtnDesacMdUsu.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				chkMdUsuarioGuar.setEnabled(false);
				chkMdUsuarioModi.setEnabled(false);
				chkMdUsuarioEliminar.setEnabled(false);
				chkMdUsuarioConsultar.setEnabled(false);	
			}
		});
		rbtnDesacMdUsu.setBounds(110, 20, 100, 20);
		rbtnDesacMdUsu.setSelected(true);
		pModGestUsuario.add(rbtnDesacMdUsu);
		
		ButtonGroup op= new ButtonGroup();
		op.add(rbtnDesacMdUsu);
		op.add(rbtnActMdUsu);
			
		
		chkMdUsuarioGuar = new JCheckBox("Guardar");
		chkMdUsuarioGuar.setBounds(90, 50, 100, 20);
		pModGestUsuario.add(chkMdUsuarioGuar);
		
		chkMdUsuarioModi = new JCheckBox("Modificar");
		chkMdUsuarioModi.setActionCommand("");
		chkMdUsuarioModi.setBounds(90, 70, 100, 20);
		pModGestUsuario.add(chkMdUsuarioModi);
		
		chkMdUsuarioEliminar = new JCheckBox("Eliminar");
		chkMdUsuarioEliminar.setActionCommand("");
		chkMdUsuarioEliminar.setBounds(90, 90, 100, 20);
		pModGestUsuario.add(chkMdUsuarioEliminar);
		
		chkMdUsuarioConsultar = new JCheckBox("Consultar");
		chkMdUsuarioConsultar.setActionCommand("");
		chkMdUsuarioConsultar.setBounds(90, 110, 100, 20);
		pModGestUsuario.add(chkMdUsuarioConsultar);
	}	
	public void panelModPermiso(){
		JPanel pModGestPermiso = new JPanel();
		pModGestPermiso.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Modulo Gestion de Permiso", TitledBorder.LEFT, TitledBorder.TOP, null, null));
		pModGestPermiso.setBounds(270, 300, 250, 150);		
		pModGestPermiso.setLayout(null);
		getContentPane().add(pModGestPermiso);		
		
		rbtnActMdPer = new JRadioButton("Activar");
		rbtnActMdPer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				chkMdPermisoGuar.setEnabled(true);
				chkMdPermisoModi.setEnabled(true);
				chkMdPermisoEliminar.setEnabled(true);
				chkMdPermisoConsultar.setEnabled(true);	
			}
		});
		rbtnActMdPer.setBounds(30, 20, 80, 20);
		pModGestPermiso.add(rbtnActMdPer);
		
		rbtnDesacMdPer = new JRadioButton("Desactivar");
		rbtnDesacMdPer.setSelected(true);
		rbtnDesacMdPer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				chkMdPermisoGuar.setEnabled(false);
				chkMdPermisoModi.setEnabled(false);
				chkMdPermisoEliminar.setEnabled(false);
				chkMdPermisoConsultar.setEnabled(false);
			}
		});
		rbtnDesacMdPer.setBounds(110, 20, 100, 20);
		rbtnDesacMdPer.setSelected(true);
		pModGestPermiso.add(rbtnDesacMdPer);
		
		ButtonGroup op= new ButtonGroup();
		op.add(rbtnDesacMdPer);
		op.add(rbtnActMdPer);
		
		chkMdPermisoGuar = new JCheckBox("Guardar");
		chkMdPermisoGuar.setBounds(90, 50, 100, 20);
		pModGestPermiso.add(chkMdPermisoGuar);
		
		chkMdPermisoModi = new JCheckBox("Modificar");
		chkMdPermisoModi.setActionCommand("");
		chkMdPermisoModi.setBounds(90, 70, 100, 20);
		pModGestPermiso.add(chkMdPermisoModi);
		
		chkMdPermisoEliminar = new JCheckBox("Eliminar");
		chkMdPermisoEliminar.setActionCommand("");
		chkMdPermisoEliminar.setBounds(90, 90, 100, 20);
		pModGestPermiso.add(chkMdPermisoEliminar);
		
		chkMdPermisoConsultar = new JCheckBox("Consultar");
		chkMdPermisoConsultar.setActionCommand("");
		chkMdPermisoConsultar.setBounds(90, 110, 100, 20);
		pModGestPermiso.add(chkMdPermisoConsultar);
	}	
	public void panelModProy(){
		JPanel pModGestProy = new JPanel();
		pModGestProy.setLayout(null);
		pModGestProy.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Modulo Gestion de Proyecto", TitledBorder.LEFT, TitledBorder.TOP, null, null));
		pModGestProy.setBounds(10, 150, 250, 150);
		getContentPane().add(pModGestProy);
		
		rbtnActMdProy = new JRadioButton("Activar");	
		rbtnActMdProy.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				chkMdProyGuar.setEnabled(true);
				chkMdProyModi.setEnabled(true);
				chkMdProyEliminar.setEnabled(true);
				chkMdProyConsultar.setEnabled(true);
			}
		});
		rbtnActMdProy.setBounds(30, 20, 80, 20);
		pModGestProy.add(rbtnActMdProy);
		
		rbtnDesacMdProy = new JRadioButton("Desactivar");
		rbtnDesacMdProy.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				chkMdProyGuar.setEnabled(false);
				chkMdProyModi.setEnabled(false);
				chkMdProyEliminar.setEnabled(false);
				chkMdProyConsultar.setEnabled(false);	
			}
		});
		rbtnDesacMdProy.setBounds(110, 20, 100, 20);
		pModGestProy.add(rbtnDesacMdProy);
		
		ButtonGroup op= new ButtonGroup();
		op.add(rbtnDesacMdProy);
		op.add(rbtnActMdProy);
		
		
		chkMdProyGuar = new JCheckBox("Guardar");
		chkMdProyGuar.setBounds(90, 50, 100, 20);
		pModGestProy.add(chkMdProyGuar);
		
		chkMdProyModi = new JCheckBox("Modificar");
		chkMdProyModi.setActionCommand("");
		chkMdProyModi.setBounds(90, 70, 100, 20);
		pModGestProy.add(chkMdProyModi);
		
		chkMdProyEliminar = new JCheckBox("Eliminar");
		chkMdProyEliminar.setActionCommand("");
		chkMdProyEliminar.setBounds(90, 90, 100, 20);
		pModGestProy.add(chkMdProyEliminar);
		
		chkMdProyConsultar = new JCheckBox("Consultar");
		chkMdProyConsultar.setActionCommand("");
		chkMdProyConsultar.setBounds(90, 110, 100, 20);
		pModGestProy.add(chkMdProyConsultar);			
	}	
	public void panelModAudi(){
		JPanel pModGestAudi = new JPanel();
		pModGestAudi.setLayout(null);
		pModGestAudi.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Modulo Gestion de Auditoria", TitledBorder.LEFT, TitledBorder.TOP, null, null));
		pModGestAudi.setBounds(270, 150, 250, 150);
		getContentPane().add(pModGestAudi);
		
		rbtnDesacMdAudi = new JRadioButton("Desactivar");
		rbtnDesacMdAudi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				chkMdAudiGuar.setEnabled(false);
				chkMdAudiModi.setEnabled(false);
				chkMdAudiEliminar.setEnabled(false);
				chkMdAudiConsultar.setEnabled(false);
			}
		});
		rbtnDesacMdAudi.setBounds(110, 20, 100, 20);
		pModGestAudi.add(rbtnDesacMdAudi);
		
		rbtnActMdAudi = new JRadioButton("Activar");
		rbtnActMdAudi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				chkMdAudiGuar.setEnabled(true);
				chkMdAudiModi.setEnabled(true);
				chkMdAudiEliminar.setEnabled(true);
				chkMdAudiConsultar.setEnabled(true);
			}
		});
		rbtnActMdAudi.setBounds(30, 20, 80, 20);
		pModGestAudi.add(rbtnActMdAudi);
		
		ButtonGroup op= new ButtonGroup();
		op.add(rbtnDesacMdAudi);
		op.add(rbtnActMdAudi);
		
		chkMdAudiGuar = new JCheckBox("Guardar");
		chkMdAudiGuar.setBounds(90, 50, 100, 20);
		pModGestAudi.add(chkMdAudiGuar);
		
		chkMdAudiModi = new JCheckBox("Modificar");
		chkMdAudiModi.setActionCommand("");
		chkMdAudiModi.setBounds(90, 70, 100, 20);
		pModGestAudi.add(chkMdAudiModi);
		
		chkMdAudiEliminar = new JCheckBox("Eliminar");
		chkMdAudiEliminar.setActionCommand("");
		chkMdAudiEliminar.setBounds(90, 90, 100, 20);
		pModGestAudi.add(chkMdAudiEliminar);
		
		chkMdAudiConsultar = new JCheckBox("Consultar");
		chkMdAudiConsultar.setActionCommand("");
		chkMdAudiConsultar.setBounds(90, 110, 100, 20);
		pModGestAudi.add(chkMdAudiConsultar);
	}

	public void initButton(){		
		JButton btnAceptar = new JButton(ConstantesGlobales.BTN_SALIR);
		btnAceptar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {				
				dispose();
			}
		});
		btnAceptar.setBounds(225, 460, 89, 23);
		getContentPane().add(btnAceptar);;
	}

	private void DisableCheckBox(){
		//Desactivar Usuario
		this.rbtnDesacMdUsu.setEnabled(false);
		this.rbtnActMdUsu.setEnabled(false);
		this.chkMdUsuarioGuar.setEnabled(false);
		this.chkMdUsuarioModi.setEnabled(false);
		this.chkMdUsuarioEliminar.setEnabled(false);
		this.chkMdUsuarioConsultar.setEnabled(false);
		
		//Desactivar Permiso
		this.rbtnDesacMdPer.setEnabled(false);
		this.rbtnActMdPer.setEnabled(false);
		this.chkMdPermisoGuar.setEnabled(false);
		this.chkMdPermisoModi.setEnabled(false);
		this.chkMdPermisoEliminar.setEnabled(false);
		this.chkMdPermisoConsultar.setEnabled(false);
		
		//Desactivar Proyecto
		this.rbtnActMdProy.setEnabled(false);
		this.rbtnDesacMdProy.setEnabled(false);
		this.chkMdProyGuar.setEnabled(false);
		this.chkMdProyModi.setEnabled(false);
		this.chkMdProyEliminar.setEnabled(false);
		this.chkMdProyConsultar.setEnabled(false);
		
		//Descativar Auditoria
		this.rbtnActMdAudi.setEnabled(false);
		this.rbtnDesacMdAudi.setEnabled(false);
		this.chkMdAudiGuar.setEnabled(false);
		this.chkMdAudiModi.setEnabled(false);
		this.chkMdAudiEliminar.setEnabled(false);
		this.chkMdAudiConsultar.setEnabled(false);
		
	}	
	private void LimpiarCheckBox(){
		//Desactivar Usuario
		this.rbtnDesacMdUsu.setSelected(false);
		this.rbtnActMdUsu.setSelected(false);
		this.chkMdUsuarioGuar.setSelected(false);
		this.chkMdUsuarioModi.setSelected(false);
		this.chkMdUsuarioEliminar.setSelected(false);
		this.chkMdUsuarioConsultar.setSelected(false);
		
		//Desactivar Permiso
		this.rbtnDesacMdPer.setSelected(false);
		this.rbtnActMdPer.setSelected(false);
		this.chkMdPermisoGuar.setSelected(false);
		this.chkMdPermisoModi.setSelected(false);
		this.chkMdPermisoEliminar.setSelected(false);
		this.chkMdPermisoConsultar.setSelected(false);
		
		//Desactivar Proyecto
		this.rbtnActMdProy.setSelected(false);
		this.rbtnDesacMdProy.setSelected(false);
		this.chkMdProyGuar.setSelected(false);
		this.chkMdProyModi.setSelected(false);
		this.chkMdProyEliminar.setSelected(false);
		this.chkMdProyConsultar.setSelected(false);
		
		//Descativar Auditoria
		this.rbtnActMdAudi.setSelected(false);
		this.rbtnDesacMdAudi.setSelected(false);
		this.chkMdAudiGuar.setSelected(false);
		this.chkMdAudiModi.setSelected(false);
		this.chkMdAudiEliminar.setSelected(false);
		this.chkMdAudiConsultar.setSelected(false);
		
	}
	public String generarCodigoPermiso(){
		String cp=null;
		if (rbtnActMdPer.isSelected()){
            cp = "1";            
            if(this.chkMdPermisoGuar.isSelected())
                cp = cp+"1";
            else
                cp = cp + "0";
            if(this.chkMdPermisoModi.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
            if (this.chkMdPermisoEliminar.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
            if (this.chkMdPermisoConsultar.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
        }
        else
            cp = "00000";        
		return cp;
	}
	public String generarCodigoUsuario(){
		String cp=null;
		if (rbtnActMdUsu.isSelected()){
            cp = "1";            
            if(this.chkMdUsuarioGuar.isSelected())
                cp = cp+"1";
            else
                cp = cp + "0";
            if(this.chkMdUsuarioModi.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
            if (this.chkMdUsuarioEliminar.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
            if (this.chkMdUsuarioConsultar.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
        }
        else
            cp = "00000";        
		return cp;
	}	
	public String generarCodigoProyecto(){
		String cp=null;
		if (rbtnActMdProy.isSelected()){
            cp = "1";            
            if(this.chkMdProyGuar.isSelected())
                cp = cp+"1";
            else
                cp = cp + "0";
            if(this.chkMdProyModi.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
            if (this.chkMdProyEliminar.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
            if (this.chkMdProyConsultar.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
        }
        else
            cp = "00000";        
		return cp;
	}
	public String generarCodigoAuditoria(){
		String cp=null;
		if (rbtnActMdAudi.isSelected()){
            cp = "1";            
            if(this.chkMdAudiGuar.isSelected())
                cp = cp+"1";
            else
                cp = cp + "0";
            if(this.chkMdAudiModi.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
            if (this.chkMdAudiEliminar.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
            if (this.chkMdAudiConsultar.isSelected())
                cp = cp + "1";
            else
                cp = cp + "0";
        }
        else
            cp = "00000";        
		return cp;
	}
	public String generarCodigoSeguridad(){
		String codigo=null;
		codigo=generarCodigoPermiso()+generarCodigoUsuario()+generarCodigoAuditoria()+generarCodigoProyecto();
		return codigo;
	}	
}
